El junco de los páramos (Junco vulcani) habita en zonas abiertas en elevaciones altas, usualmente por encima de los 3000 m. Suele posarse sobre el suelo en pequeños arbustos, generalmente en parejas o en grupos pequeños. Su rango es muy limitado: solo en Costa Rica o en el oeste de Panamá (eBird, Junco vulcani).
library(dplyr)
library(sf)
library(DT)
library(plotly)
library(leaflet)
library(viridis)
# Paleta de colores
pal <- viridis(12)
# Cantones
cantones <-
st_read(
"https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/ign/delimitacion-territorial-administrativa/cr_cantones_simp_wgs84.geojson",
quiet = TRUE
)
# Carga de datos
junco_vulcani <-
st_read(
"https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/gbif/junco_vulcani-cr-registros.csv",
options = c(
"X_POSSIBLE_NAMES=decimalLongitude",
"Y_POSSIBLE_NAMES=decimalLatitude"
),
quiet = TRUE
)
# Asignación de CRS
st_crs(junco_vulcani) = 4326
# Cruce de datos de cantones
junco_vulcani <-
junco_vulcani %>%
st_join(cantones["canton"])
## although coordinates are longitude/latitude, st_intersects assumes that they are planar
## although coordinates are longitude/latitude, st_intersects assumes that they are planar
junco_vulcani %>%
st_drop_geometry() %>%
select(stateProvince, canton, locality, eventDate) %>%
datatable(colnames = c(
"Provincia",
"Cantón",
"Localidad",
"Fecha"),
options = list(searchHighlight = TRUE)
)
# Gráfico de registros de presencia por mes
junco_vulcani %>%
st_drop_geometry() %>%
group_by(mes = format(as.Date(eventDate, "%Y-%m-%d"), "%m")) %>%
summarize(suma_registros = n()) %>%
filter(!is.na(mes)) %>%
plot_ly(x = ~ mes,
y = ~ suma_registros) %>%
layout(title = "Estacionalidad",
xaxis = list(title = "Mes"),
yaxis = list(title = "Cantidad de registros"))
## No trace type specified:
## Based on info supplied, a 'bar' trace seems appropriate.
## Read more about this trace type -> https://plotly.com/r/reference/#bar
# Gráfico de registros de presencia por mes
junco_vulcani %>%
st_drop_geometry() %>%
group_by(anio = format(as.Date(eventDate, "%Y-%m-%d"), "%Y")) %>%
summarize(suma_registros = n()) %>%
filter(!is.na(anio)) %>%
filter(anio >= 2011) %>%
plot_ly(x = ~ anio,
y = ~ suma_registros, type = "bar", color = "pal") %>%
layout(title = "Estacionalidad",
xaxis = list(title = "Año"),
yaxis = list(title = "Cantidad de registros"))
# Gráfico de registros de presencia por mes
junco_vulcani %>%
st_drop_geometry() %>%
group_by(mes = format(as.Date(eventDate, "%Y-%m-%d"), "%m")) %>%
summarize(suma_registros = n()) %>%
filter(!is.na(mes)) %>%
plot_ly(x = ~ mes,
y = ~ suma_registros,
type="scatter", mode = "markers", fill = "tozeroy", fillcolor = "#009999") %>%
layout(title = "Estacionalidad",
xaxis = list(title = "Mes"),
yaxis = list(title = "Cantidad de registros"))
# Mapa de registros de presencia
junco_vulcani %>%
select(stateProvince,
canton,
locality,
eventDate) %>%
leaflet() %>%
addProviderTiles(providers$OpenStreetMap.Mapnik, group = "OpenStreetMap") %>%
addProviderTiles(providers$Stamen.TonerLite, group = "Stamen Toner Lite") %>%
addProviderTiles(providers$Esri.WorldImagery, group = "Imágenes de ESRI") %>%
addCircleMarkers(
stroke = F,
radius = 4,
fillColor = '#660099',
fillOpacity = 1,
popup = paste(
junco_vulcani$stateProvince,
junco_vulcani$canton,
junco_vulcani$locality,
junco_vulcani$eventDate,
sep = '<br/>'
),
group = "Junco vulcani"
) %>%
addLayersControl(
baseGroups = c("OpenStreetMap", "Stamen Toner Lite", "Imágenes de ESRI"),
overlayGroups = c("Terciopelos (Bothrops asper)")
) %>%
addMiniMap(
tiles = providers$Stamen.OpenStreetMap.Mapnik,
position = "bottomleft",
toggleDisplay = TRUE
)